# --------------------------------
# -*- coding: utf-8 -*-
# Author: Zhu
# Date: 2021/12/21   
# Description:作业端-B2B流程的页面元素
# --------------------------------
import time
from PageLocators.page_b2bprocess_loc import ele_B2B_PROCESS as loc
from Common.Base import Base
from Common.GetLog import GetLog
log = GetLog.get_logger()

class fun_B2B_PROCESS(Base):

    '''
     作业端-B2B流程的页面元素
     1、B2B退货入库订单
     2、收货入库
     3、纸单上架
     4、退厂出库订单
     5、B2B订单处理
     6、B2B纸单拣货
     7、B2B订单复核
     8、B2B交接发货
     '''

#------------------------------------------------------------------------------------1、退货入库订单-----------------------

    def m01_Open_RefundOrder(self):
        '''
        1、B2B退货入库订单：打开退货入库页面
        :return:
        '''

        log.info('1、B2B退货入库订单：打开退货入库页面')
        print('1、B2B退货入库订单：打开退货入库页面')
        self.base_click(loc.ys01_RefundOrder)
        time.sleep(1)

    def m01_Create_RefundOrder(self):
        '''
        1、B2B退货入库订单：点击创建退货入库订单，打开新建退货入库页面
        :return:
        '''

        log.info('1、B2B退货入库订单：点击创建退货入库订单，打开新建退货入库页面')
        print('1、B2B退货入库订单：点击创建退货入库订单，打开新建退货入库页面')
        self.base_click(loc.ys01_Create_B2BRefund)
        time.sleep(1)

    def m01_Input_RefundOrder_Info(self,WB_ReturnGoods_Number,Logistics_Company,Logistice_ONumber,ReturnGoods_Reason,
                                   Remark,Goods_quantity):
        '''
        1、B2B退货入库订单：新建退货入库页面，输入退货入库订单信息,由于有商品数量，所以需要先执行添加商品再执行输入内容的方法
        :return:
        '''

        log.info('1、B2B退货入库订单：新建退货入库页面，输入退货入库订单信息')
        print('1、B2B退货入库订单：新建退货入库页面，输入退货入库订单信息')

        log.info('1、B2B退货入库订单：输入框--外部退货单号')
        print('1、B2B退货入库订单：输入框--外部退货单号')
        self.base_input(loc.ys01_WB_ReturnGoods_Number, WB_ReturnGoods_Number)
        time.sleep(1)

        log.info('1、B2B退货入库订单：输入框--物流公司')
        print('1、B2B退货入库订单：输入框--物流公司')
        self.base_input(loc.ys01_Logistics_Company, Logistics_Company)
        time.sleep(1)

        log.info('1、B2B退货入库订单：输入框--物流单号')
        print('1、B2B退货入库订单：输入框--物流单号')
        self.base_input(loc.ys01_Logistice_ONumber, Logistice_ONumber)
        time.sleep(1)

        log.info('1、B2B退货入库订单：输入框--退货原因')
        print('1、B2B退货入库订单：输入框--退货原因')
        self.base_input(loc.ys01_ReturnGoods_Reason, ReturnGoods_Reason)
        time.sleep(1)

        log.info('1、B2B退货入库订单：输入框--备注')
        print('1、B2B退货入库订单：输入框--备注')
        self.base_input(loc.ys01_Remark, Remark)
        time.sleep(1)

        # 添加商品后的修改商品数量
        log.info('1、B2B退货入库订单：修改商品数量')
        print('1、B2B退货入库订单：修改商品数量')
        self.base_input(loc.ys01_Goods_quantity, Goods_quantity)
        time.sleep(1)


    def m01_ChooseList_RefundOrder(self):
        '''
        1、B2B退货入库订单：新建退货入库页面，输入退货入库订单信息
        :return:
        '''

        log.info('1、B2B退货入库订单：新建退货入库页面，下拉列表字段选择')
        print('1、B2B退货入库订单：新建退货入库页面，下拉列表字段选择')

        log.info('1、B2B退货入库订单：下拉列表字段选择--货主名称')
        print('1、B2B退货入库订单：下拉列表字段选择---货主名称')
        self.base_click(loc.ys01_Shipper)
        time.sleep(1)
        self.base_click(loc.ys01_Shipper2)
        time.sleep(1)

        log.info('1、B2B退货入库订单：下拉列表字段选择--退货客户')
        print('1、B2B退货入库订单：下拉列表字段选择---退货客户')
        self.base_click(loc.ys01_ReturnGoods_Customer)
        time.sleep(1)
        self.base_click(loc.ys01_ReturnGoods_Customer2)
        time.sleep(1)

    def m01_AddGoods(self):
        '''
        1、B2B退货入库订单：新建退货入库页面，添加商品
        :return:
        '''
        log.info('1、B2B退货入库订单：新建退货入库页面，添加商品')
        print('1、B2B退货入库订单：新建退货入库页面，添加商品')

        log.info('1、B2B退货入库订单：新建退货入库页面，点击添加商品')
        print('1、B2B退货入库订单：新建退货入库页面，点击添加商品')
        self.base_click(loc.ys01_AddGoods)
        time.sleep(1)

        log.info('1、B2B退货入库订单：下拉列表字段选择--商品名称')
        print('1、B2B退货入库订单：下拉列表字段选择--商品名称')
        self.base_click(loc.ys01_Goods_Name)
        time.sleep(1)
        self.base_click(loc.ys01_Goods_Name2)
        time.sleep(1)

        # # 商品数量放在上面修改了
        # log.info('修改商品数量')
        # print('修改商品数量')
        # self.base_click(loc.ys_Goods_quantity)
        # time.sleep(1)

        log.info('1、B2B退货入库订单：保存添加的商品')
        print('1、B2B退货入库订单：保存添加的商品')
        self.base_click(loc.ys01_SaveGoods_Btn)
        time.sleep(1)

        log.info('1、B2B退货入库订单：关闭添加商品页面')
        print('1、B2B退货入库订单：关闭添加商品页面')
        self.base_click(loc.ys01_CloseGoods_Btn)
        time.sleep(1)

    def m01_Submit(self):
        '''
        1、B2B退货入库订单：保存新建退货入库页面
        :return:
        '''

        log.info('1、B2B退货入库订单：保存新建退货入库页面')
        print('1、B2B退货入库订单：保存新建退货入库页面')
        self.base_click(loc.ys01_SaveOrder_Btn)
        time.sleep(1)

    def m01_Click_Verify_ListOne(self):
        '''
        1、B2B退货入库订单：选择并审核列表第一条数据
        :return:
        '''
        log.info('1、B2B退货入库订单：选择并审核列表第一条数据')
        print('1、B2B退货入库订单：选择并审核列表第一条数据')
        self.base_click(loc.ys01_Click_ListOne)
        time.sleep(1)
        self.base_click(loc.ys01_Verify_ListOne)
        time.sleep(1)
        self.base_click(loc.ys01_Verify_ListOne2)
        time.sleep(1)

#------------------------------------------------------------------------------------ 2、收货入库-------------------------

    def m02_Open_Receipt_Goods(self):
        '''
        2、收货入库：打开收货入库页面
        :return:
        '''
        log.info('2、收货入库：打开收货入库页面')
        print('2、收货入库：打开收货入库页面')
        self.base_click(loc.ys02_Receipt_Goods)
        time.sleep(1)

        log.info('2、收货入库：选择货主进行筛选数据')
        print('2、收货入库：选择货主进行筛选数据')
        self.base_click(loc.ys02_Search_Shipper)
        time.sleep(1)
        self.base_click(loc.ys02_Search_Shipper2)
        time.sleep(1)

        log.info('2、收货入库：点击搜索按钮')
        print('2、收货入库：点击搜索按钮')
        self.base_click(loc.ys02_Search_Btn)
        time.sleep(1)


    def m02_ReceiptGoods_process(self):
        '''
        2、收货入库：验收流程
        :return:
        '''
        log.info('2、收货入库：验收流程')
        print('2、收货入库：验收流程')

        log.info('2、收货入库：验收流程--点击列表第一条数据的验收按钮')
        print('2、收货入库：验收流程--点击列表第一条数据的验收按钮')
        self.base_click(loc.ys02_Receipt_GoodsList_One)
        time.sleep(1)

        # 注意：由于有时候第一次打开验收页面，会存在打不开的情况，所以统一进行第二次打开验收页面再进行验收
        log.info('2、收货入库：打开收货入库页面')
        print('2、收货入库：打开收货入库页面')
        # self.base_click(loc.ys02_Receipt_Goods)
        # time.sleep(1)
        self.m02_Open_Receipt_Goods()
        time.sleep(1)

        log.info('2、收货入库：验收流程--点击列表第一条数据的验收按钮')
        print('2、收货入库：验收流程--点击列表第一条数据的验收按钮')
        self.base_click(loc.ys02_Receipt_GoodsList_One)
        time.sleep(1)

        log.info('2、收货入库：验收流程--选择验收页面的第一条数据')
        print('2、收货入库：验收流程--选择验收页面的第一条数据')
        self.base_click(loc.ys02_Receipt_GoodsList2_One)
        time.sleep(1)

        log.info('2、收货入库：验收流程--点击本次验收按钮')
        print('2、收货入库：验收流程--点击本次验收按钮')
        self.base_click(loc.ys02_Standard_Acceptance)
        time.sleep(1)



#------------------------------------------------------------------------------------ 3、纸单上架-------------------------

    def m03_Open_Paper_Shelf(self):
        '''
        3、纸单上架：打开纸单上架页面
        :return:
        '''
        log.info('3、纸单上架：打开纸单上架页面')
        print('3、纸单上架：打开纸单上架页面')
        self.base_click(loc.ys03_Paper_Shelf)
        time.sleep(1)

        log.info('3、纸单上架：选择货主进行筛选数据')
        print('3、纸单上架：选择货主进行筛选数据')
        self.base_click(loc.ys03_Search_Shipper)
        time.sleep(1)
        self.base_click(loc.ys03_Search_Shipper2)
        time.sleep(1)

        log.info('3、纸单上架：点击搜索按钮')
        print('3、纸单上架：点击搜索按钮')
        self.base_click(loc.ys03_Search_Btn)
        time.sleep(1)

    def m03_Shelf_process(self, Shelf_Location , Shelf_Quantity):
        '''
        3、纸单上架：上架流程
        :return:
        '''
        log.info('3、纸单上架：上架流程')
        print('3、纸单上架：上架流程')

        log.info('3、纸单上架：上架流程--点击列表第一条数据的上架按钮')
        print('3、纸单上架：上架流程--点击列表第一条数据的上架按钮')
        self.base_click(loc.ys03_Shelf_Btn)
        time.sleep(1)

        log.info('3、纸单上架：上架流程--输入上架库位')
        print('3、纸单上架：上架流程--输入上架库位')
        self.base_input(loc.ys03_Shelf_Location,Shelf_Location)
        time.sleep(1)

        log.info('3、纸单上架：上架流程--输入上架数量')
        print('3、纸单上架：上架流程--输入上架数量')
        self.base_input(loc.ys03_Shelf_Quantity,Shelf_Quantity)
        time.sleep(1)

        log.info('3、纸单上架：上架流程--点击上架确认按钮，完成上架')
        print('3、纸单上架：上架流程--点击上架确认按钮，完成上架')
        self.base_click(loc.ys03_Shelf_Submit)
        time.sleep(1)



#------------------------------------------------------------------------------------4、退厂出库订单-----------------------

    def m04_Open_RefundFactory(self):
        '''
        4、退厂出库订单：打开退厂出库页面
        :return:
        '''
        log.info('4、退厂出库订单：打开退厂出库页面')
        print('4、退厂出库订单：打开退厂出库页面')
        self.base_click(loc.ys04_RDelivery_Order)
        time.sleep(1)

    def m04_CreateOrder_process(self, OutOrderN , Consignee , Consignee_Phone , Address , Remark , Order_GoodsQuantity):
        '''
        4、退厂出库订单：创建退厂出库单流程
        :return:
        '''
        log.info('4、退厂出库订单：创建退厂出库单流程')
        print('4、退厂出库订单：创建退厂出库单流程')

        log.info('4、退厂出库订单：创建退厂出库单流程--点击创建按钮')
        print('4、退厂出库订单：创建退厂出库单流程--点击创建按钮')
        self.base_click(loc.ys04_Create_RDelivery_Order)
        time.sleep(1)

        log.info('4、退厂出库订单：创建退厂出库单流程--选择下拉列表选项')
        print('4、退厂出库订单：创建退厂出库单流程--选择下拉列表选项')
        self.base_click(loc.ys04_Shipper)
        time.sleep(1)
        self.base_click(loc.ys04_Shipper2)
        time.sleep(1) # 货主

        self.base_click(loc.ys04_Supplie)
        time.sleep(1)
        self.base_click(loc.ys04_Supplie2)
        time.sleep(1) # 供应商

        self.base_click(loc.ys04_Carrier)
        time.sleep(1)
        self.base_click(loc.ys04_Carrier2)
        time.sleep(1) # 承运商

        log.info('4、退厂出库订单：创建退厂出库单流程--添加商品')
        print('4、退厂出库订单：创建退厂出库单流程--添加商品')
        self.base_click(loc.ys04_AddGoods_btn)
        time.sleep(1)
        self.base_click(loc.ys04_AddGoods_ListOne) # 选择商品列表第一条数据
        time.sleep(1)
        self.base_click(loc.ys04_AddGoods_Add) # 添加商品
        time.sleep(1)
        self.base_click(loc.ys04_AddGoods_close) # 关闭商品弹窗
        time.sleep(1)


        log.info('4、退厂出库订单：创建退厂出库单流程--输入其他信息')
        print('4、退厂出库订单：创建退厂出库单流程--输入其他信息')

        log.info('4、退厂出库订单：创建退厂出库单流程--输入外部订单号')
        print('4、退厂出库订单：创建退厂出库单流程--输入外部订单号')
        self.base_input(loc.ys04_OutOrderN,OutOrderN)
        time.sleep(1)

        log.info('4、退厂出库订单：创建退厂出库单流程--输入收货人')
        print('4、退厂出库订单：创建退厂出库单流程--输入收货人')
        self.base_input(loc.ys04_Consignee,Consignee)
        time.sleep(1)

        log.info('4、退厂出库订单：创建退厂出库单流程--输入收货人手机')
        print('4、退厂出库订单：创建退厂出库单流程--输入收货人手机')
        self.base_input(loc.ys04_Consignee_Phone,Consignee_Phone)
        time.sleep(1)

        log.info('4、退厂出库订单：创建退厂出库单流程--输入收货地址')
        print('4、退厂出库订单：创建退厂出库单流程--输入收货地址')
        self.base_input(loc.ys04_Address,Address)
        time.sleep(1)

        log.info('4、退厂出库订单：创建退厂出库单流程--输入备注')
        print('4、退厂出库订单：创建退厂出库单流程--输入备注')
        self.base_input(loc.ys04_Remark,Remark)
        time.sleep(1)

        log.info('4、退厂出库订单：创建退厂出库单流程--输入订单数量')
        print('4、退厂出库订单：创建退厂出库单流程--输入订单数量')
        self.base_input(loc.ys04_Order_GoodsQuantity,Order_GoodsQuantity)
        time.sleep(1)

        log.info('4、退厂出库订单：创建退厂出库单流程--保存')
        print('4、退厂出库订单：创建退厂出库单流程--保存')
        self.base_click(loc.ys04_Submit_Btn)
        time.sleep(1)





#------------------------------------------------------------------------------------5、B2B订单处理-----------------------

#------------------------------------------------------------------------------------6、B2B纸单拣货-----------------------

#------------------------------------------------------------------------------------7、B2B订单复核-----------------------

#------------------------------------------------------------------------------------8、B2B交接发货-----------------------


